package org.clockworkmages.games.anno1186.scripting.tools;

public abstract class GameCharacterScriptBuilder
		extends ScriptBuilder {

	public GameCharacterScriptBuilder(String prefix) {
		super(new StringBuffer(prefix));
	}

	public GameCharacterScriptBuilder(StringBuffer sb, BuilderWrapper parent) {
		super(sb, parent);
	}

	public ScriptBuilder getEffectiveStat(String statId) {
		sb.append(".getEffectiveStat('" + statId + "')");
		return this;
	}

	public ScriptBuilder addGold(int amount) {
		sb.append(".addGold(" + amount + ")");
		return this;
	}

	public ScriptBuilder setGender(int gender) {
		sb.append(".setGender(" + gender + ")");
		return this;
	}

	public ScriptBuilder getGender() {
		sb.append(".getGender()");
		return this;
	}

	public ScriptBuilder isMale() {
		sb.append(".isMale()");
		return this;
	}

	public ScriptBuilder getSkillLevel(String skillId) {
		sb.append(".getSkillLevel('" + skillId + "')");
		return this;
	}

	public ScriptBuilder isUnarmed() {
		sb.append(".isUnarmed()");
		return this;
	}

	public ScriptBuilder modifyDerivate(String id, int modifyBy) {
		sb.append(".modifyDerivate('" + id + "'," + modifyBy + ")");
		return this;
	}

	public ScriptBuilder modifyDerivate(String id, double modifyBy) {
		sb.append(".modifyDerivate('" + id + "'," + modifyBy + ")");
		return this;
	}

	public ScriptBuilder modifyDerivate(String id, String modifyBy) {
		sb.append(".modifyDerivate('" + id + "'," + modifyBy + ")");
		return this;
	}

	public ScriptBuilder modifyDerivatePerc(String id, int modifyByPerc) {
		sb.append(".modifyDerivatePerc('" + id + "'," + modifyByPerc + ")");
		return this;
	}

	public ScriptBuilder modifyDerivatePerc(String id, String modifyByPerc) {
		sb.append(".modifyDerivatePerc('" + id + "'," + modifyByPerc + ")");
		return this;
	}

	public ScriptBuilder modifyDamage(String damageTypeId, double minDamage,
			double range) {
		sb.append(".modifyDamage('" + damageTypeId + "'," + minDamage + ","
				+ range + ")");
		return this;
	}

	public ScriptBuilder modifyDamage(String damageTypeId, String minDamage,
			String range) {
		sb.append(".modifyDamage('" + damageTypeId + "'," + minDamage + ","
				+ range + ")");
		return this;
	}

	public ScriptBuilder getGold() {
		sb.append(".getGold()");
		return this;
	}

	public ScriptBuilder increaseStat(String statId, int value) {
		sb.append(".increaseStat('" + statId + "'," + value + ")");
		return this;
	}

	public ScriptBuilder getDerivate(String statId) {
		sb.append(".getDerivate('" + statId + "')");
		return this;
	}

	public ScriptBuilder skillRoll(String skillId, int difficulty) {
		sb.append(".skillRoll('" + skillId + "'," + difficulty + ")");
		return this;
	}

	public ScriptBuilder skillRoll(String skillId, String difficulty) {
		sb.append(".skillRoll('" + skillId + "'," + difficulty + ")");
		return this;
	}

	public ScriptBuilder skillRoll(String skillId, int difficulty,
			String cacheKey) {
		sb.append(".skillRoll('" + skillId + "'," + difficulty + ",'"
				+ cacheKey + "')");
		return this;
	}

	public ScriptBuilder skillRoll(String skillId, String difficulty,
			String cacheKey) {
		sb.append(".skillRoll('" + skillId + "'," + difficulty + ",'"
				+ cacheKey + "')");
		return this;
	}

	public ScriptBuilder skillChance(String skillId, int difficulty) {
		sb.append(".skillChance('" + skillId + "'," + difficulty + ")");
		return this;
	}

	public ScriptBuilder equipItemNoInv(String itemId) {
		sb.append(".equipItemNoInv('" + itemId + "')");
		return this;
	}

	public ScriptBuilder equipItem(String itemId) {
		sb.append(".equipItem('" + itemId + "')");
		return this;
	}

	public ScriptBuilder unequipItem(String itemId) {
		sb.append(".unequipItem('" + itemId + "')");
		return this;
	}

	public ScriptBuilder addItem(String itemId) {
		sb.append(".addItem('" + itemId + "')");
		return this;
	}

	public ScriptBuilder removeItem(String itemId) {
		sb.append(".removeItem('" + itemId + "')");
		return this;
	}

	public ScriptBuilder removeCurrentItem() {
		sb.append(".removeCurrentItem()");
		return this;
	}

	public ScriptBuilder addCondition(String conditionId, int level,
			long duration) {
		sb.append(".addCondition('" + conditionId + "'," + level + ","
				+ duration + ")");
		return this;
	}

	public ScriptBuilder incapacitate(String incapacitatedStateId,
			int difficulty) {
		sb.append(".incapacitate('" + incapacitatedStateId + "'," + difficulty
				+ ")");
		return this;
	}

	public ScriptBuilder survived() {
		sb.append(".survived()");
		return this;
	}

	public ScriptBuilder healthAtLeast1() {
		sb.append(".healthAtLeast1()");
		return this;
	}

	public ScriptBuilder gainExperience(int experience) {
		sb.append(".gainExperience(" + experience + ")");
		return this;
	}

}
